package com.yeyks.cnbooking.service;

import com.yeyks.cnbooking.dto.calendar.RoomCalendarDTO;
import com.yeyks.cnbooking.dto.hotel.HotelInfoDTO;
import com.yeyks.cnbooking.dto.room.RoomInfoDTO;
import com.yeyks.cnbooking.param.hotel.CbHotelListSearchParam;

import java.util.List;
import java.util.Map;

/**
 * 对象转换service
 *
 * @author shuai
 * @date 2019/09/26 16:21
 */
public interface TransitionService {

    /**
     * 酒店查询
     *
     * @param countryId 国家id
     * @param hotelId   酒店id
     * @return
     */
    HotelInfoDTO hotelSearch(String countryId, String hotelId);

    /**
     * 酒店列表查询
     *
     * @param param
     * @return
     */
    List<HotelInfoDTO> hotelListSearch(CbHotelListSearchParam param);

    /**
     * 查询房间
     *
     * @param countryId  国家Id
     * @param hotelId    酒店ID
     * @param provinceId 省Id
     * @param cityId     市Id
     * @return 返回房间列表
     */
    List<RoomInfoDTO> roomSearch(String countryId,
                                 String provinceId,
                                 String cityId,
                                 String hotelId,
                                 Double lowPercent,
                                 Double highPercent);

    /**
     * Map <String, List<RoomCalendarDTO>>
     *
     * @param countryId
     * @param provinceId
     * @param cityId
     * @param hotelId
     * @param roomId
     * @param checkIn
     * @param checkOut
     * @return 返回的类型 <房间ID，对应的房态数据信息>
     */
    Map<String,List<RoomCalendarDTO>> mapRoomCalendarSearch(String countryId,
                                                         String provinceId,
                                                         String cityId,
                                                         String hotelId,
                                                         String roomId,
                                                         String checkIn,
                                                         String checkOut,
                                                         Double lowPercent,
                                                         Double highPercent);
}
